<?php
/**
 * 用户中心的数据库模型层
 * 
 * @copyright Copyright (c) 2008 sdmblog (http://www.sdmblog.cn)
 * @author sdomain(sdomain@live.cn)
 * @version user.model.php Sat May 17 16:59:07 CST 2008 php $
 */
class model_user {
	/**
	 * 查询语句，每次查询时把对应的查询句语保存在此处，以便调试
	 *
	 * @var string
	 */
	var $querString = '';
	/**
	 * 用户信息-登录成功后把用户信息保存到COOKIE并给此属付值
	 *
	 * @var array;
	 */
	var $userInfo = array();
	/**
	 * 添加用户，向数据库内添加用户信息
	 *
	 * @param array $userInfo 保存用户信息的数组
	 */
	function addUser($userInfo) {
		global $db,$tablepre,$ip,$lang;
		$sql = 'select id from '.$tablepre.'users where username = \''.$userInfo['username'].'\'';
		$this->querString = $sql;
		$db->query($sql);
		if ($db->numRows>0) {
			throw new Exception($lang['REG_ERROR_001'],0);
		}
		$now = time();
		$userInfo['password'] = md5($userInfo['password']);
		$sql = 'insert into `'.$tablepre.'users` ( `id` , `username`  , `password` , `email` , `sex` , `ask` , `answer` , `regip` , `regdate` , `loginip` , `logindate` ) 
		values (NULL , \''.$userInfo['username'].'\', \''.$userInfo['password'].'\', \''.$userInfo['email'].'\', \''.$userInfo['gender'].'\', \'\', \'\', \''.$ip.'\', '.$now.',0,0)';
		$this->querString = $sql;
		$db->query($sql);
	}
	/**
	 * 用户登录，根据用户名和密码，确定用户合法性，并在用户合法的情况下，给用户设置COOKIE
	 *
	 * @param string $username 用户名
	 * @param string $password 密码
	 * @return int 如果成功，返回1，并设置用户的COOKIE使判断用户是否登录的函数返回真，如果用户非法，则返回0，并不作任何操作
	 */
	function login($username,$password){
		global $db,$tablepre,$secret_id,$ip;
		$password = md5($password);
		$sql = 'select u.id,u.groupid,g.rights from '.$tablepre.'users u,'.$tablepre.'usergroup g where g.id = u.groupid and u.username = \''.$username.'\' and password = \''.$password.'\'';
		$this->queryString = $sql;
		$res = $db->query($sql);
		if($db->numRows != 1){
			return 0;
		}else{
			$now = time();
			$user = $db->db_fetch_array($res);
			$userinfo = $user['id'].'-'.$username.'-'.$now.'-'.$user['groupid'].'-'.$user['rights'].'-'.md5($user['id'].$username.$now.$user['groupid'].$user['rights'].$secret_id);
			$this->userInfo = explode('-',$userinfo);
			mkcookie('userinfo',$userinfo);
			//更新最后登录IP和时间,此时间可以在前一SQL里取出来，放到COOKIE以便在页面上显示上次登录时间，此处先放这，以后再近一步开发
			$sql = 'update '.$tablepre.'users set loginip = \''.$ip.'\',logindate = '.$now.' where username = \''.$username.'\' and password = \''.$password.'\'';
			$db->query($sql);
			return 1;
		}
	}
	/**
	 * 根据用户信息，返回用户登录后的页面菜单显示内容
	 *
	 * @param array $userinfo 登录的用户信息数组
	 * @return string 显示用户菜单的HTML
	 */
	function getUserHTML($userinfo)
	{
		global $lang,$virdir;
		$rights = $userinfo[4];
		if ($userinfo[3]==1) {
			$menu = '<li><a href="/'.$virdir.'admin.php">'.$lang['MENU_USER_001'].'</a></li>
					';
		}
		if (substr($rights,1,1)=='2') {
			$menu .='<li><a href="/'.$virdir.'newarticle.php">'.$lang['MENU_USER_002'].'</a></li>
					';
		}
		$strHTML = '<h5>用户信息</h5>
					<div class="panel-content">
					<div class="comment-text">'.$lang['MSG_USERISLOGIN'].' <b>'.$userinfo[1].'</b></div><br />
					<ul>
					'.$menu.'<li><a href="/'.$virdir.'user.php/act/edit/id/'.$userinfo[0].'">'.$lang['MENU_USER_003'].'</a></li>
					<li><a href="/'.$virdir.'index.php/act/logout">'.$lang['MENU_USER_004'].'</a></li>
					</ul>
					</div>
					';
		return $strHTML;
	}
}
?>